C#中的一个问题```高手支招```

来源:百度知道 编辑:UC知道 时间:2024/07/01 06:03:24
我做了一个windows应用程序.

我把他发给了我的朋友,我和我朋友运行程序进行通信,比如我朋友的IP是"125.25.36.2",我的IP是"127.25.214.24".我发送的消息他能收到,但他不能给我发消息,程序总是报错说"无法连接到目标源"

现在来介绍我和我朋友的网络状况,我朋友是直接通过拨号器上网的,有自己的IP,而我是通过路由器PPPoE拨号上网的,几台机子共享上网,我上面说的我的IP是进入路由器查看到的.

我应该怎么做才能使路由器内网里的机子和外网的一台机子通信呢?

希望说详细点```得正街还追加分数```

你的朋友是无法直接与你的IP地址通信的。
因为你在你的局域网中,而你的朋友是公网的IP。

给你一个最简单易行的办法:
你与路由器的管理员联系,向他要路由器的账号密码,把你的IP固定,就是你的IP和你的Mac地址绑定,然后把你的IP设为DMZ主机。那么,公网就可以直接通过路由器的IP来与你的电脑联系了。

还有其他办法,你安装一些映射地址的软件,这样很麻烦,没有必要。

还有就是你把你的软件所遵循的协议改动一下,比如把他改为UDP协议。

还是建议你用第一种方法。

祝你好运!

防火墙..这个问题貌似我也遇到过...但忘了如何解决了~~先把两方的防火墙关掉..试下?

在路由上设置转发~比如你运行该程序监听的端口是66~你的内网IP是192.168.1.9~那你就到路由起上设置转发规则~将外网端口66的数据转发到IP为192.168.1.109的66号端口上

您好,

防火墙是一个原因,但不是症结所在。

内外网间通信,最主要的问题在网络地址上。

如您所说,您的朋友有自己的公网IP,而您的路由器有公网IP,您的计算机是私有的内网IP。

我想到的解决方案有两个:

1.路由器打开NAT也就是网络地址转换功能并进行一定配置。
2.把程序做成C/S架构,由公网一边做Server。

其实主要的问题在于,当您朋友输入IP地址时,他输入的是你路由器的IP地址,程序会尝试与您的路由器建立连接……

C/S架构在这种情况下很常见,而且P2P对于聊天没有太大意义。

就像现在一些木马,因为宿主机在内网,木马服务端无法连接中木马的机器,于是有一种方法是在网上申请一个主页空间,骇客上线后会把自己的IP发到该主页空间上,然后木马客户端去读取并主动和服务端建立连接,这样的方式叫做反向连接技术。

希望这些信息对您有帮助。